Enterprises today manage their user environments by deploying services directly to individual users' machines, such as anti-virus, spyware scanning, and other enterprise approved applications and/or services (e.g., approved e-mail, approved graphics editor, approved Internet messaging, etc.). The practice, however, is growing more difficult to manage as multi-core computing environments reach the desktop.
For example, dual-core and recent quad-core systems in a single computing device involve parallel programming which, to date, has been known to cause problems. That is, separate tasks have regularly needed shared memory caches for accessing data. When one task is accessing memory, and the other needs access to the same memory, a system crash can occur if proper safeguards are not put in place. While this is but one problem, it typifies the nature of parallel programming. Consider further that this problem compounds itself as cores increase in size from two and four to eight, sixteen, thirty-two or more. Imagine further the problem of complication as enterprise's have dozens, hundreds or thousands of employees, each with a dedicated computing device having multiple cores or multiple devices acting together for a common purpose, with or without multiple cores. Regulatory pressures will also mount as new products and programming techniques emerge.
As another example, future multi-core processing environments might find individual services being taken care of by virtual machines rather than monolithic operating systems. For instance, today it is very common to run a single operating system on a user's computing device (such as Linux or Windows brand operating systems) and to run all other applications in that environment. In the future, operating environments will be specific to the service rather than the computing device and the services will be operating as virtual machines on the multi-core computing environment.
Today's art also includes the running of a base operating system on a user's computing device and then a virtual machine on that base's operating system (e.g., Windows runs VMware on Linux). However, this does not mitigate issues because, in this case, an anti-virus scanning service must be running on both Linux and on the Windows virtual machine in order to mitigate virus threats.
With reference to FIG. 3, a computing environment 25 shows sixteen processing cores (C1-C16), and a computing scenario where: Internet Messaging (IM) is serviced by a single core C1; e-mail is serviced by two cores C2 and C3; Photo Editing is serviced by four cores C4-C7; Anti-Virus scanning for real-time virus protection is serviced by one core C8, Graphics editing is serviced by two cores C9 and C10; and the remaining cores C11-C16 are available for other services/applications/etc. Considering the further scenario where the operating environment for IM is Linux-based, while the operating environment for Photo Editing is Windows-based, it can be seen that a single user's computing device with sixteen cores will not run a single operating environment, but a hypervisor-type virtual environment management mechanism. In turn, this makes demands of the Anti-Virus real-time scanning module quite high because the module must understand the operational characteristics of, not one, but many computing environments.
Accordingly, a need exists in the art of user computing environments to better program to multiple cores. The need further contemplates a paradigm of assemblies of computing devices acting collectively as a multiple core, with or without each having multiple cores. In turn, the paradigm needs robustness to deploy individual services to the users, but in a way that supports a plethora of computing environments without unduly complicating the environment. As with many modern paradigms, such should also embrace governance scenarios and user identity awareness, while simultaneously enabling flexibility, integration with multiple applications and evolving technologies. Naturally, any improvements along such lines should further contemplate good engineering practices, such as relative inexpensiveness, stability, ease of implementation, low complexity, security, unobtrusiveness, etc.